﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ImobitechModel.com.Constantes;
using ImobitechModel.com.Controller;

namespace Imobitech.Gestao
{
    public partial class cadastroContasReceber : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //carregaParcelas();
                carregaPanelParcelas();
                sucesso.Visible = false;
                error.Visible = false;
                carregarCategoria();
            }
            
        }

        private void carregarCategoria()
        {
            ControladorGestao cg = new ControladorGestao();
            ddlCategoria.DataSource = cg.retornaCategorias();
            ddlCategoria.DataTextField = "categoria";
            ddlCategoria.DataValueField = "Id";
            ddlCategoria.DataBind();
            ddlCategoria.SelectedIndex = 0;
        }


        private void carregaPanelParcelas()
        {
            pnlParcelas.Controls.Clear();
            int parcelas = !string.IsNullOrEmpty(txtParcelas.Text) ? int.Parse(txtParcelas.Text) : 1;

            for (int index = 0; index < parcelas; index++)
            {
                TextBox _textbox = new TextBox();
                _textbox.ID = "valorparcelas" + index;
                TextBox _textboxData = new TextBox();
                _textboxData.ID = "vencimentoparcelas" + index;

                TextBox _textboxDesconto = new TextBox();
                _textboxDesconto.ID = "desconto" + index;

                TextBox _textboxAcrescimo = new TextBox();
                _textboxAcrescimo.ID = "acrescimo" + index;

                LiteralControl ltc = new LiteralControl("<br />");

                Label lblValor = new Label();
                lblValor.Text = "Valor: ";
                Label lblVencimento = new Label();
                lblVencimento.Text = "Data de Vencimento: ";

                Label lblDesconto = new Label();
                lblDesconto.Text = "Desconto: ";

                Label lblAcrescimo = new Label();
                lblAcrescimo.Text = "Acréscimo: ";

                pnlParcelas.Controls.Add(lblVencimento);
                pnlParcelas.Controls.Add(_textboxData);
                LiteralControl ltc2 = new LiteralControl("<br />");
                pnlParcelas.Controls.Add(ltc2);
                pnlParcelas.Controls.Add(lblValor);
                pnlParcelas.Controls.Add(_textbox);
                LiteralControl ltc3 = new LiteralControl("<br />");
                pnlParcelas.Controls.Add(ltc3);
                pnlParcelas.Controls.Add(lblDesconto);
                pnlParcelas.Controls.Add(_textboxDesconto);
                LiteralControl ltc4 = new LiteralControl("<br />");
                pnlParcelas.Controls.Add(ltc4);
                pnlParcelas.Controls.Add(lblAcrescimo);
                pnlParcelas.Controls.Add(_textboxAcrescimo);

                pnlParcelas.Controls.Add(ltc);

                LiteralControl ltc5 = new LiteralControl("<hr />");
                pnlParcelas.Controls.Add(ltc5);

            }

            updParcelas.Update();
        }

        protected void txtParcelas_TextChanged(object sender, EventArgs e)
        {
            carregaPanelParcelas();
        }

        protected void btnCadastrar_Click(Object sender, EventArgs e)
        {

            ContasValues contas = new ContasValues(2);
            contas.descricao = txtDescricao.Text;
            contas.numeroParcelas = txtParcelas.Text != "" ? int.Parse(txtParcelas.Text) : 1;
            contas.tipoConta = int.Parse(ddlTipo.SelectedValue);
            contas.categoria = int.Parse(ddlCategoria.SelectedValue);
            for (int index = 0; index < contas.numeroParcelas; index++)
            {
                Parcelas parcela = new Parcelas();

                parcela.valor = this.Request.Form["ctl00$MainContent$valorparcelas" + index] != "" ? decimal.Parse(this.Request.Form["ctl00$MainContent$valorparcelas" + index]) : 0;
                parcela.vencimento = this.Request.Form["ctl00$MainContent$vencimentoparcelas" + index] != "" ? DateTime.Parse(this.Request.Form["ctl00$MainContent$vencimentoparcelas" + index]) : DateTime.Now;
                parcela.desconto = this.Request.Form["ctl00$MainContent$desconto" + index] != "" ? decimal.Parse(this.Request.Form["ctl00$MainContent$desconto" + index]) : 0;
                parcela.acrescimo = this.Request.Form["ctl00$MainContent$acrescimo" + index] != "" ? decimal.Parse(this.Request.Form["ctl00$MainContent$acrescimo" + index]) : 0;
                contas.parcelas.Add(parcela);
            }
            
            ControladorGestao cg = new ControladorGestao();

            bool retorno = (bool)cg.cadastrarConta(contas);
            if (retorno)
            {
                sucesso.InnerHtml = "<span>Cadastrado com sucesso</span>";
                sucesso.Visible = true;
                txtDescricao.Text = "";
                txtParcelas.Text = "";
                txtParcelas.Enabled = true;
                txtParcelas.ReadOnly = false;
                carregaPanelParcelas();
                updParcelas.Update();
            }
            else
            {
                error.InnerHtml = "<span>Erro ao cadastrar</span>";
                error.Visible = true;
            }
        }

        protected void ddlTipo_SelectedChanged(Object sender, EventArgs e)
        {
            if (ddlTipo.SelectedValue.Equals("2") || ddlTipo.SelectedValue.Equals("3"))
            {
                txtParcelas.Text = "1";
                txtParcelas.Enabled = false;
                txtParcelas.ReadOnly = true;
                carregaPanelParcelas();
                updParcelas.Update();
            }
            else
            {
                txtParcelas.Text = "4";
                txtParcelas.Enabled = true;
                txtParcelas.ReadOnly = false;
                carregaPanelParcelas();
                updParcelas.Update();
            }
        }
    }
}